package sort;

/**
 * @author way
 * @create 2025-03-17 21:02
 */
public class BubbleSort {
    /**
     * 冒泡排序：从后往前两两比较相邻的元素，如果为逆序，则交换他们，
     * 一趟结束后，最大的元素放在了最后一个位置
     *
     * @param a
     */
    public void bubbleSort(int[] a) {
        int len = a.length;
        for (int i = 0; i < len - 1; ++i) {//len个元素，需要len-1趟
            for (int j = 1; j < len - i; ++j) {
                if (a[j - 1] > a[j]) {
                    swap(a, j - 1, j);
                }
            }
        }
    }

    /*
数组元素i和j交换位置
 */
    public void swap(int[] a, int i, int j) {
        int temp;
        temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{5,4,3,8,2,7,9,1};
        BubbleSort sort = new BubbleSort();
        sort.bubbleSort(arr);
        for (int i : arr) {
            System.out.println(i);
        }
    }
}
